home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / gdata / tlslite / BaseDB.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  4.2 KB  |  146 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''Base class for SharedKeyDB and VerifierDB.'''
  5. import anydbm
  6. import thread
  7.  
  8. class BaseDB:
  9.     
  10.     def __init__(self, filename, type):
  11.         self.type = type
  12.         self.filename = filename
  13.         if self.filename:
  14.             self.db = None
  15.         else:
  16.             self.db = { }
  17.         self.lock = thread.allocate_lock()
  18.  
  19.     
  20.     def create(self):
  21.         """Create a new on-disk database.
  22.  
  23.         @raise anydbm.error: If there's a problem creating the database.
  24.         """
  25.         if self.filename:
  26.             self.db = anydbm.open(self.filename, 'n')
  27.             self.db['--Reserved--type'] = self.type
  28.             self.db.sync()
  29.         else:
  30.             self.db = { }
  31.  
  32.     
  33.     def open(self):
  34.         """Open a pre-existing on-disk database.
  35.  
  36.         @raise anydbm.error: If there's a problem opening the database.
  37.         @raise ValueError: If the database is not of the right type.
  38.         """
  39.         if not self.filename:
  40.             raise ValueError('Can only open on-disk databases')
  41.         self.filename
  42.         self.db = anydbm.open(self.filename, 'w')
  43.         
  44.         try:
  45.             if self.db['--Reserved--type'] != self.type:
  46.                 raise ValueError('Not a %s database' % self.type)
  47.             self.db['--Reserved--type'] != self.type
  48.         except KeyError:
  49.             raise ValueError('Not a recognized database')
  50.  
  51.  
  52.     
  53.     def __getitem__(self, username):
  54.         if self.db == None:
  55.             raise AssertionError('DB not open')
  56.         self.db == None
  57.         self.lock.acquire()
  58.         
  59.         try:
  60.             valueStr = self.db[username]
  61.         finally:
  62.             self.lock.release()
  63.  
  64.         return self._getItem(username, valueStr)
  65.  
  66.     
  67.     def __setitem__(self, username, value):
  68.         if self.db == None:
  69.             raise AssertionError('DB not open')
  70.         self.db == None
  71.         valueStr = self._setItem(username, value)
  72.         self.lock.acquire()
  73.         
  74.         try:
  75.             self.db[username] = valueStr
  76.             if self.filename:
  77.                 self.db.sync()
  78.         finally:
  79.             self.lock.release()
  80.  
  81.  
  82.     
  83.     def __delitem__(self, username):
  84.         if self.db == None:
  85.             raise AssertionError('DB not open')
  86.         self.db == None
  87.         self.lock.acquire()
  88.         
  89.         try:
  90.             del self.db[username]
  91.             if self.filename:
  92.                 self.db.sync()
  93.         finally:
  94.             self.lock.release()
  95.  
  96.  
  97.     
  98.     def __contains__(self, username):
  99.         '''Check if the database contains the specified username.
  100.  
  101.         @type username: str
  102.         @param username: The username to check for.
  103.  
  104.         @rtype: bool
  105.         @return: True if the database contains the username, False
  106.         otherwise.
  107.  
  108.         '''
  109.         if self.db == None:
  110.             raise AssertionError('DB not open')
  111.         self.db == None
  112.         self.lock.acquire()
  113.         
  114.         try:
  115.             return self.db.has_key(username)
  116.         finally:
  117.             self.lock.release()
  118.  
  119.  
  120.     
  121.     def check(self, username, param):
  122.         value = self.__getitem__(username)
  123.         return self._checkItem(value, username, param)
  124.  
  125.     
  126.     def keys(self):
  127.         '''Return a list of usernames in the database.
  128.  
  129.         @rtype: list
  130.         @return: The usernames in the database.
  131.         '''
  132.         if self.db == None:
  133.             raise AssertionError('DB not open')
  134.         self.db == None
  135.         self.lock.acquire()
  136.         
  137.         try:
  138.             usernames = self.db.keys()
  139.         finally:
  140.             self.lock.release()
  141.  
  142.         usernames = _[1]
  143.         return usernames
  144.  
  145.  
  146.